Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / ci / github-build-linux-release-assets.sh

Displaying Raw • Download


scripts/ci/github-build-linux-release-assets.sh 390e25efcbfdccb6d275eb544aec4fcc07fdca99 (390e25ef) Text, 3.01 KB

T8b949e#!/usr/bin/env bash
T8b949e# Build wheel, Linux AppImage/deb (x64 + arm64), optional RPM, frontend zip, and SBOM under ./release-assets/.
T8b949e# Expects repo root as cwd, dependencies installed (task install / pnpm), and meshchatx/public populated when building Electron.
T8b949e# Optional: SKIP_WHEEL=1, SKIP_ELECTRON=1, TRIVY_SBOM=0
Tffa657set -euo pipefail

Te6edf3ROOTTff7b72=Ta5d6ff"Tff7b72$(Tffa657cd Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/../..Ta5d6ff" Tff7b72&& Tffa657pwdTff7b72)Ta5d6ff"
Tffa657cd Ta5d6ff"Te6edf3$ROOTTa5d6ff"

T8b949e# shellcheck source=scripts/ci/ci-node-path.sh
. Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/ci-node-path.shTa5d6ff"

require_node_minTff7b72(Tff7b72) Tff7b72{
Te6edf3_min_majorTff7b72=Ta5d6ff"Tffd700${Te6edf31Tff7b72:-Te6edf322Tffd700}Ta5d6ff"
Te6edf3_verTff7b72=Ta5d6ff"Tff7b72$(node -v T79c0ff2>/dev/null Tff7b72|| Tffa657trueTff7b72)Ta5d6ff"
Te6edf3_majorTff7b72=Ta5d6ff"Tffd700${Te6edf3_verTb4b4b4#vTffd700}Ta5d6ff"
Te6edf3_majorTff7b72=Ta5d6ff"Tffd700${Te6edf3_majorTb4b4b4%%.*Tffd700}Ta5d6ff"
Tff7b72if Tff7b72[ -z Ta5d6ff"Te6edf3$_majorTa5d6ff" Tff7b72] Tff7b72|| Tff7b72[ Ta5d6ff"Te6edf3$_majorTa5d6ff" -lt Ta5d6ff"Te6edf3$_min_majorTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffNode.js Tffd700${Te6edf3_min_majorTffd700}Ta5d6ff+ required (got: Tffd700${Te6edf3_verTff7b72:-Te6edf3unknownTffd700}Ta5d6ff); check PATH does not prefer /usr/local/bin over setup-node.Ta5d6ff" >Tb4b4b4&T79c0ff2
Tffa657command -v node >Tb4b4b4&T79c0ff2 Tff7b72|| Tffa657true
Tffa657exit T79c0ff1
Tff7b72fi
Tff7b72}

require_node_min T79c0ff24

mkdir -p release-assets

Te6edf3HOST_ARCHTff7b72=Ta5d6ff"Tff7b72$(uname -mTff7b72)Ta5d6ff"
Tff7b72case Ta5d6ff"Te6edf3$HOST_ARCHTa5d6ff" Tff7b72in
x86_64Tff7b72) Te6edf3NATIVE_ARCHTff7b72=Ta5d6ff"x64" Tb4b4b4;Tb4b4b4;
aarch64Tb4b4b4|arm64Tff7b72) Te6edf3NATIVE_ARCHTff7b72=Ta5d6ff"arm64" Tb4b4b4;Tb4b4b4;
*Tff7b72) Te6edf3NATIVE_ARCHTff7b72=Ta5d6ff"Te6edf3$HOST_ARCHTa5d6ff" Tb4b4b4;Tb4b4b4;
Tff7b72esac

Tff7b72if Tff7b72[ Ta5d6ff"Tffd700${Te6edf3SKIP_WHEELTff7b72:-Te6edf30Tffd700}Ta5d6ff" !Tff7b72= T79c0ff1 Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$NATIVE_ARCHTa5d6ff" Tff7b72= Ta5d6ff"x64" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Building Python wheel..."
task build:wheel
Tff7b72else
Tffa657echo Ta5d6ff"Ta5d6ffSkipping wheel on Te6edf3$NATIVE_ARCHTa5d6ff runner (pure-Python wheel built on x64).Ta5d6ff"
Tff7b72fi
Tff7b72else
Tffa657echo Ta5d6ff"Skipping wheel (SKIP_WHEEL=1)."
Tff7b72fi

Tff7b72if Tff7b72[ Ta5d6ff"Tffd700${Te6edf3SKIP_ELECTRONTff7b72:-Te6edf30Tffd700}Ta5d6ff" !Tff7b72= T79c0ff1 Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$NATIVE_ARCHTa5d6ff" Tff7b72= Ta5d6ff"x64" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Electron linux x64..."
pnpm run dist:linux-x64
Tff7b72elif Tff7b72[ Ta5d6ff"Te6edf3$NATIVE_ARCHTa5d6ff" Tff7b72= Ta5d6ff"arm64" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Electron linux arm64..."
pnpm run dist:linux-arm64
Tff7b72fi

Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$NATIVE_ARCHTa5d6ff" Tff7b72= Ta5d6ff"x64" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"RPM (best-effort)..."
Tff7b72if ! task dist:fe:rpmTb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"RPM build failed or skipped; continuing." >Tb4b4b4&T79c0ff2
Tff7b72fi
Tff7b72fi
Tff7b72else
Tffa657echo Ta5d6ff"Skipping Electron packages (SKIP_ELECTRON=1)."
Tff7b72fi

Tffa657echo Ta5d6ff"Collecting release files..."
find dist -maxdepth T79c0ff1 -type f Tffea00\( -name Ta5d6ff"*-linux*.AppImage" -o -name Ta5d6ff"*-linux*.deb" -o -name Ta5d6ff"*-linux*.rpm" Tffea00\) -exec cp -f Tff7b72{Tff7b72} release-assets/ Tffea00\; T79c0ff2>/dev/null Tff7b72|| Tffa657true
find python-dist -maxdepth T79c0ff1 -type f -name Ta5d6ff"*.whl" -exec cp -f Tff7b72{Tff7b72} release-assets/ Tffea00\; T79c0ff2>/dev/null Tff7b72|| Tffa657true

Tff7b72if Tff7b72[ -d meshchatx/public Tff7b72] Tff7b72&& Tff7b72[ Ta5d6ff"Tffd700${Te6edf3SKIP_ELECTRONTff7b72:-Te6edf30Tffd700}Ta5d6ff" !Tff7b72= T79c0ff1 Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72( Tffa657cd meshchatx/public Tff7b72&& zip -qr Ta5d6ff"Tffd700${Te6edf3ROOTTffd700}Ta5d6ff/release-assets/meshchatx-frontend.zipTa5d6ff" . Tff7b72)
Tff7b72fi

Tff7b72{
Tffa657echo Ta5d6ff"## Integrity"
Tffa657echo Ta5d6ff""
Tffa657echo Ta5d6ff"Each artifact may have a matching **\`*.cosign.bundle\`** when repository signing secrets are configured (see SECURITY.md)."
Tffa657echo Ta5d6ff""
Tffa657echo Ta5d6ff"SBOM: **\`sbom.cyclonedx.json\`** (CycloneDX) when produced by CI."
Tff7b72} > release-body.md

Tff7b72if Tff7b72[ Ta5d6ff"Tffd700${Te6edf3TRIVY_SBOMTff7b72:-Te6edf31Tffd700}Ta5d6ff" !Tff7b72= T79c0ff0 Tff7b72] Tff7b72&& Tffa657command -v trivy >/dev/null T79c0ff2>Tb4b4b4&T79c0ff1Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Generating SBOM..."
trivy fs --format cyclonedx --include-dev-deps --output release-assets/sbom.cyclonedx.json .
Tff7b72else
Tffa657echo Ta5d6ff"Skipping SBOM (trivy not on PATH or TRIVY_SBOM=0)." >Tb4b4b4&T79c0ff2
Tff7b72fi

Tffa657echo Ta5d6ff"github-build-linux-release-assets.sh: done; see ./release-assets/"


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────